package zucai;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

public class Zucai {
	
	@Test
	public void CalculationZuCai(){
		List<Double> matches = new ArrayList<Double>();
		BigDecimal bonus = new BigDecimal(0);//奖金
		BigDecimal amount  = new BigDecimal(2);//总投注倍数
		BigDecimal rates = new BigDecimal(0);//赔率和
		matches.add(1.56);
		matches.add(1.33);
		matches.add(1.31);
		matches.add(1.37);
		matches.add(1.55);
		matches.add(1.68);
		/*for(int i=0;i<matches.size();i++){
			int num = 2;
			BigDecimal result = new BigDecimal(matches.get(i));
			for(int b=1 ;b<num;b++){
				if(i+b<matches.size()){
					result = result.multiply(new BigDecimal(matches.get(i+b)));
				}else{
					result = result.multiply(new BigDecimal(matches.get(b+i-matches.size())));
				}
			}
			rates = rates.add(result);
		}
		for(int i=0;i<matches.size();i++){
			int num = 3;
			BigDecimal result = new BigDecimal(matches.get(i));
			for(int b=1 ;b<num;b++){
				if(i+b<matches.size()){
					result = result.multiply(new BigDecimal(matches.get(i+b)));
				}else{
					result = result.multiply(new BigDecimal(matches.get(b+i-matches.size())));
				}
			}
			rates = rates.add(result);
		}
		for(int i=0;i<matches.size();i++){
			int num = 4;
			BigDecimal result = new BigDecimal(matches.get(i));
			for(int b=1 ;b<num;b++){
				if(i+b<matches.size()){
					result = result.multiply(new BigDecimal(matches.get(i+b)));
				}else{
					result = result.multiply(new BigDecimal(matches.get(b+i-matches.size())));
				}
			}
			rates = rates.add(result);
		}*/
		/*================二串一=====================*/
//		int serialNum1 = 2;
//		BigDecimal noteNum1 = this.getNoteNum(serialNum1, matches.size());
//		Integer[] a = new Integer[serialNum1];
//		for(int i=0;i<serialNum1;i++){
//			a[i] = i;
//		}
//		for(int i=0;i<noteNum1.intValue();i++){
//			BigDecimal result = new BigDecimal(matches.get(a[0]));
//			result = result.multiply(new BigDecimal(matches.get(a[1])));
//			rates = rates.add(result);
//			a[0] = a[1]==matches.size()-1?a[0]+1:a[0];
//			a[1] = a[1]==matches.size()-1?a[0]+1:a[1]+1;
//		}
		/*================三串一=====================*/
//		int serialNum2 = 3;
//		BigDecimal noteNum2 = this.getNoteNum(serialNum2, matches.size());
//		Integer[] b = new Integer[serialNum2];
//		for(int i=0;i<serialNum2;i++){
//			b[i] = i;
//		}
//		for(int i=0;i<noteNum2.intValue();i++){
//				BigDecimal result = new BigDecimal(matches.get(b[0]));
//				for(int x=1;x<serialNum2;x++){
//					result = result.multiply(new BigDecimal(matches.get(b[x])));
//				}
//				rates = rates.add(result);
//				if(b[2]==matches.size()-1&&b[1]==matches.size()-2){
//					b[0]++;
//					b[1] = b[0]+1;
//					b[2] = b[1]+1;
//				}else if(b[2]==matches.size()-1){
//					b[1]++;
//					b[2] = b[1]+1;
//				}else{
//					b[2]++;
//				}
//		}
		/*================四串一=====================*/
		int serialNum3 = 4;
		BigDecimal noteNum3 = this.getNoteNum(serialNum3, matches.size());
		Integer[] c = new Integer[serialNum3];
		for(int i=0;i<serialNum3;i++){
			c[i] = i;
		}
		for(int i=0;i<noteNum3.intValue();i++){
				BigDecimal result = new BigDecimal(matches.get(c[0]));
				for(int x=1;x<serialNum3;x++){
					result = result.multiply(new BigDecimal(matches.get(c[x])));
				}
				rates = rates.add(result);
				if(c[3]==matches.size()-1&&c[2]==matches.size()-2&&c[1]==matches.size()-3){
					c[0]++;
					c[1] = c[0]+1;
					c[2] = c[1]+1;
					c[3] = c[2]+1;
				}else if(c[3]==matches.size()-1&&c[2]==matches.size()-2){
					c[1]++;
					c[2] = c[1]+1;
					c[3] = c[2]+1;
				}else if(c[3]==matches.size()-1){
					c[2]++;
					c[3] = c[2]+1;
				}else{
					c[3]++;
				}
		}
		/*================五串一=====================*/
//		int serialNum4 = 5;
//		BigDecimal noteNum4 = this.getNoteNum(serialNum4, matches.size());
//		Integer[] d = new Integer[serialNum4];
//		for(int i=0;i<serialNum4;i++){
//			d[i] = i;
//		}
//		for(int i=0;i<noteNum4.intValue();i++){
//			BigDecimal result = new BigDecimal(matches.get(d[0]));
//			for(int x=1;x<serialNum4;x++){
//				result = result.multiply(new BigDecimal(matches.get(d[x])));
//			}
//			rates = rates.add(result);
//			if(d[4]==matches.size()-1&&d[3]==matches.size()-2&&d[2]==matches.size()-3&&d[1]==matches.size()-4){
//				d[0]++;
//				d[1] = d[0]+1;
//				d[2] = d[1]+1;
//				d[3] = d[2]+1;
//				d[4] = d[3]+1;
//			}else if(d[4]==matches.size()-1&&d[3]==matches.size()-2&&d[2]==matches.size()-3){
//				d[1]++;
//				d[2] = d[1]+1;
//				d[3] = d[2]+1;
//				d[4] = d[3]+1;
//			}else if(d[4]==matches.size()-1&&d[3]==matches.size()-2){
//				d[2]++;
//				d[3] = d[2]+1;
//				d[4] = d[3]+1;
//			}else if(d[4]==matches.size()-1){
//				d[3]++;
//				d[4] = d[3]+1;
//			}else{
//				d[4]++;
//			}
//		}
		bonus = rates.multiply(amount);
		System.out.println(bonus);
	}
	private BigDecimal getNoteNum(Integer serialNum,Integer countMatch){
		BigDecimal noteNum = new BigDecimal(countMatch);
		for(int i=1;i<serialNum;i++){
			noteNum = noteNum.multiply(new BigDecimal(countMatch-i));
		}
		for(int i=0;i<serialNum-1;i++){
			noteNum = noteNum.divide(new BigDecimal(serialNum-i));
		}
		return noteNum;
	}
	
}
